package com.sky.strategy;

/**
 * @author : wushikai
 * <p>
 * date : 2020-08-17
 */

import java.math.BigDecimal;

/**----------------------策略模式实例-------------------
 *
 * 现实生活中我们买B站会员的时候，B站往往根据不同的用户制定不同的报价策略，比如针对新客户不打折扣，针对老客户打9折，针对VIP客户打8折
 *
 * */


public class BilibiliNoStrategy {



    /**
     * 上面的代码工作的很好，可是上面的代码是有问题的。
     * 上面存在的问题：把不同客户的报价的算法都放在了同一个方法里面，使得该方法很是庞大, 你要想想,
     * 实际情况可能很复杂, 用户的种类非常非常多, 到时候可能有几十种用户;
     *
     * 例如: 被别人邀请来的
     *
     * */
    public BigDecimal quote(BigDecimal originalPrice, String customType){


        if ("新客户".equals(customType)) {
            System.out.println("抱歉！新客户没有折扣！");
            return originalPrice;
        }else if ("老客户".equals(customType)) {
            System.out.println("恭喜你！老客户打9折！");
            originalPrice = originalPrice.multiply(new BigDecimal(0.9)).setScale(2,BigDecimal.ROUND_HALF_UP);
            return originalPrice;
        }else if("VIP客户".equals(customType)){
            System.out.println("恭喜你！VIP客户打8折！");
            originalPrice = originalPrice.multiply(new BigDecimal(0.8)).setScale(2,BigDecimal.ROUND_HALF_UP);
            return originalPrice;
        }
        //其他人员都是原价
        return originalPrice;
    }
}



